D20. 字串題練習
這題是之前老師出的題目但是我一直解不出來,後來看很久,還跑去問同學才解出來的,因為字串這部分我之前都搞不懂
#include<stdio.h>
#include<stdlib.h>
int l_word,l_rp,l_str;
char hold[300];
int change;
void check(char word[60],char rp[60],char str[300])
{
change=0;
int pword;
int r;
int d= l_word-l_rp;
for(int i=0; str[i]!=0; i++)
{
pword=0;
r=0;
for(int k=i; k<i+l_word; k++,pword++)
{
if(str[k]!=word[pword])
break;
}
if(pword==l_word)
{
l_str-=d;
hold[l_str]=0;
for(int forward=0; forward<i; forward++)
hold[forward]=str[forward];
for(int mid=i,prp=0; mid<i+l_rp; mid++,prp++)
hold[mid]=rp[prp];
for(int back=i+l_rp,pstr=i+l_word; back<l_str; back++,pstr++)
hold[back]=str[pstr];
change=1;
r=1;
}
if(r)
{
for(int s=0; hold[s]!=0; s++)
str[s]=hold[s];
str[l_str]=0;
}
}
}
int main()
{
char word[60],rp[60],str[300];
while(gets(word))
{
if(word[0]=='*')
break;
change=1;
gets(rp);
gets(str);
for(l_word=0; word[l_word]!=0; l_word++) {}
for(l_rp=0; rp[l_rp]!=0; l_rp++) {}
for(l_str=0; str[l_str]!=0; l_str++) {}
while(change)
{
check(word,rp,str);
}
puts(str);
}
return 0;
}